/**
 * 购物车管理路由模块
 * 
 * 实现购物车相关操作:
 * 1. GET /api/carts - 获取当前用户的购物车商品列表
 * 2. POST /api/carts - 添加商品到购物车
 * 3. PATCH /api/carts/checked - 更新购物车中所有商品的选中状态
 * 4. PATCH /api/carts/:goodsId - 更新购物车中商品的数量或选中状态
 * 5. DELETE /api/carts/:goodsId - 删除购物车中的指定商品
 */

//引入express模块
const express = require("express");

//创建路由对象
const router = express.Router();

//引入购物车控制器
const cartController = require("../controllers/cart.controller");

// 引入公共的异步错误处理工具函数
const asyncHandler = require("../utils/asyncHandler");

/**
 * @route   GET /api/carts
 * @desc    获取当前用户的购物车商品列表
 * @access  Public
 */
router.get("/", asyncHandler(cartController.getCartList));

/**
 * @route   POST /api/carts
 * @desc    添加商品到购物车或更新购物车商品数量
 * @access  Public
 */
router.post("/", asyncHandler(cartController.addToCart));

/**
 * @route   PATCH /api/carts/checked
 * @desc    更新购物车中所有商品的选中状态（全选/全不选）
 * @access  Public
 */
router.patch("/checked", asyncHandler(cartController.checkAllCart));

/**
 * @route   PATCH /api/carts/:goodsId
 * @desc    更新购物车中商品的数量或选中状态
 * @access  Public
 */
router.patch("/:goodsId", asyncHandler(cartController.updateCartItem));

/**
 * @route   DELETE /api/carts/:goodsId
 * @desc    删除购物车中的指定商品
 * @access  Public
 */
router.delete("/:goodsId", asyncHandler(cartController.deleteCartItem));

module.exports = router;